% advsync/advsync.tex

\QuickQuizChapter{sec:advsync:Advanced Synchronization}{Advanced Synchronization}

\section{Avoiding Locks}
\label{sec:advsync:Avoiding Locks}

List the ways: RCU, non-blocking synchronization (notably simpler forms),
memory barriers, deferred processing.

\emph{@@@ Pull deferral stuff back to this section?}

% \input{advsync/rcu} % @@@ need to clean up the files referenced.
\input{advsync/memorybarriers}

\section{Non-Blocking Synchronization}
\label{sec:advsync:Non-Blocking Synchronization}

\subsection{Simple NBS}
\label{sec:advsync:Simple NBS}

\subsection{Hazard Pointers}
\label{sec:advsync:Hazard Pointers}

\emph{@@@ combination of hazard pointers and RCU to eliminate memory barriers?}

\subsection{Atomic Data Structures}
\label{sec:advsync:Atomic Data Structures}

Queues and stacks --- avoiding full-race non-blocking properties
often yields great simplifications.

\subsection{``Macho'' NBS}
\label{sec:advsync:``Macho'' NBS}

Cite Herlihy and his crowd.

Describe constraints (X-freedom, linearizability, ...) and show examples
breaking them.
